#默认的grpc端口
if [ -z "$IBUILDING_INFER_ENGINE_HTTP_PORT" ]; then
  export IBUILDING_INFER_ENGINE_HTTP_PORT="28010"
fi
echo $IBUILDING_INFER_ENGINE_HTTP_PORT

if [ -z "$IBUILDING_INFER_ENGINE_GRPC_PORT" ]; then
  export IBUILDING_INFER_ENGINE_GRPC_PORT="28011"
fi
echo $IBUILDING_INFER_ENGINE_GRPC_PORT

if [ -z "$IBUILDING_INFER_ENGINE_METRICS_PORT" ]; then
  export IBUILDING_INFER_ENGINE_METRICS_PORT="28012"
fi
echo $IBUILDING_INFER_ENGINE_METRICS_PORT

docker_image_name=lzc/culn:v1.0
docker_container_name=triton_server_dev

#1x1024x1024x1024(B)=1073741824(B)=1(GB),2147483648(B)=2(GB),4294967296(B)=4(GB)
#256x1024x1024(B)=268435456(B)=256(MB),536870912(B)=512(MB)
cpu_mem_pool_size=4294967296
gpu_mem_pool_size=1073741824
gpu_id0=0
gpu_id1=1
gpu_id2=2
gpu_id3=3

# --rm 用于docker退出时自动清除容器内部的文件系统，但它不能与 --restart=always 同时使用
# --restart=always 可以在命令 systemctl restart docker 执行后自动重启，
# 但如果使用 docker container stop xxx 关闭的容器就直接重启不了，
# docker container stop xxx 后用 docker ps -a 命令查看该容器处于Exited状态，
# 可使用 docker start xxx 将它手动重启，或者使用 docker rm xxx 将其完全删除。
sudo docker run \
    --gpus '"device=0"' --rm -it \
    --ulimit memlock=-1 \
    --shm-size=4g \
    --ulimit stack=1073741824 \
    -p $IBUILDING_INFER_ENGINE_HTTP_PORT:$IBUILDING_INFER_ENGINE_HTTP_PORT \
    -p $IBUILDING_INFER_ENGINE_GRPC_PORT:$IBUILDING_INFER_ENGINE_GRPC_PORT \
    -p $IBUILDING_INFER_ENGINE_METRICS_PORT:$IBUILDING_INFER_ENGINE_METRICS_PORT \
    --net host \
    --name ${docker_container_name} \
    -v $PWD/model_repo:/models \
    ${docker_image_name} \
    tritonserver \
    --model-repository /models \
    --grpc-port $IBUILDING_INFER_ENGINE_GRPC_PORT \
    --http-port $IBUILDING_INFER_ENGINE_HTTP_PORT \
    --metrics-port $IBUILDING_INFER_ENGINE_METRICS_PORT \
    --pinned-memory-pool-byte-size $cpu_mem_pool_size \
    # --cuda-memory-pool-byte-size $gpu_id0:$gpu_mem_pool_size
